热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文火|冰糖_[机器学习与scikitlearn19]:算法逻辑回归概述与原理

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[机器学习与scikit-learn-19]:算法-逻辑回归-概述与原理相关的知识,希望对你有一定的参考价值。作者主页(

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[机器学习与scikit-learn-19]:算法-逻辑回归-概述与原理相关的知识,希望对你有一定的参考价值。


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123438808



目录

第1章 逻辑回归的应用场景

第2章 逻辑回顾在机器学习中的位置

第3章 逻辑回归与线性回归区分

第4章 什么逻辑回归

4.1 概述

4.2 链接函数与Sigmod

第5章 逻辑回顾的数学表达

第6章 sigmod函数的本质是概率吗

第7章 为什么需要逻辑回归:逻辑回归的优势

第8本章 逻辑回归分类

8.1 线性回归

8.2 非线性回归




第1章 逻辑回归的应用场景

在银行借贷场景中,评分卡是一种以分数形式来衡量一个客户的信用风险大小的手段,它衡量向别人借钱的人(受信人,需要融资的公司)不能如期履行合同中的还本付息责任,并让借钱给别人的人(授信人,银行等金融机构)造成经济损失的可能性。

一般来说,评分卡打出的分数越高,客户的信用越好,风险越小。

这些”借钱的人“,可能是个人,有可能是有需求的公司和企业。对于企业来说,我们按照融资主体的融资用途,分别使用企业融资模型,现金流融资模型,项目融资模型等模型。而对于个人来说,我们有”四张卡“来评判个人的信用程度:A卡,B卡,C卡和F卡。

而众人常说的“评分卡”其实是指A卡,又称为申请者评级模型,主要应用于相关融资类业务中新用户的主体评级,即判断金融机构是否应该借钱给一个新用户,如果这个人的风险太高,我们可以拒绝贷款。

备注:

打分是连续的,这个过程是线性拟合、线性回归。

根据打分后的信用评分,先通过线性拟合的手段获得分数,再根据分数进行分类,打分和分类在同一个模型中一次性完成,这就是逻辑回归。

“逻辑” =》 分类

“回归” =》 拟合



第2章 逻辑回顾在机器学习中的位置

逻辑回归的目标分类

逻辑回归的手段回归



第3章 逻辑回归与线性回归区分

线性拟合回归:用线性的曲线去拟合样本内在的走势。

线性逻辑回归:用线性的曲线去分割样本的类别。


第4章 什么逻辑回归


4.1 概述

逻辑回归,是一种名为“回归”的线性分类器,其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。

要理解逻辑回归从何而来,得要先理解线性回归。

线性回归是机器学习中最简单的的回归算法,它写作一个几乎人人熟悉的方程:

线性回归的任务,就是构造一个预测函数 来映射输入的特征矩阵x和标签值y的线性关系,而构造预测函数的核心就是找出模型的参数:,著名的最小二乘法就是用来求解线性回归中参数的数学方法。

通过函数 ,线性回归使用输入的特征矩阵X来输出一组连续型的标签值y_pred,以完成各种预测连续型变量的任务(比如预测产品销量,预测股价等等)。

那如果我们的标签是离散型变量,尤其是,如果是满足0-1分布的离散型变量,我们要怎么办呢?


4.2 链接函数与Sigmod

我们可以通过引入链接函数(link function),将线性回归方程z变换为g(z),并且令g(z)的值分布在(0,1)之间,且当g(z)接近0时样本的标签为类别0,当g(z)接近1时样本的标签为类别1,这样就得到了一个分类模型。

逻辑回归的本质是用函数拟合拟合的手段解决分类问题,这在深度学习中得到了极大的体现。

深度学习就是利用大量的线性神经元来拟合复杂的现实世界,并结合非线性的激活函数,把他们组合在一起共同完成分类和拟合。

因此,把回归转换为分类问题的过程中,链接函数起着及其关键的作用。

而这个链接函数对于逻辑回归来说,就是Sigmoid函数:

Sigmoid函数是一个S型的函数:

当自变量z趋近正无穷时,因变量g(z)趋近于1,而当z趋近负无穷时,g(z)趋近于0,它能够将任何实数映射到(0,1)区间,使其可用于将任意值函数转换为更适合二分类的函数。

因为这个性质,Sigmoid函数也被当作是归一化的一种方法,与我们之前学过的MinMaxSclaer同理,是属于数据预处理中的“缩放”功能,可以将数据压缩到[0,1]之内。区别在于,MinMaxScaler归一化之后,是可以取到0和1的(最大值归一化后就是1,最小值归一化后就是0),但Sigmoid函数只是无限趋近于0和1。

Sigmoid函数在逻辑回归和打分中的重要意义:

(1)把分类1对应的线性拟合出来的所有正数距离值值转换为[0.5, 1) 区间,转为为所谓的[0.5, 1) 的概率值。这样分类化,分类1的标签就是1.

(2)把分类1对应的线性拟合出来的所有正数距离值值转换为[0, 0.5) 区间,转为为所谓的(0, 0.5] 的概率值。这样分类化,分类2的标签就是0.

(3)转换后,就是要找到一个线性直线,使得标签1中所有点到直线的距离d1到分类1的标签值:“1”的距离之和,再加上标签2中所有点到直线的距离d2到分类2的标签值:0的距离之和的loss值最小。如下图示意:


第5章 逻辑回顾的数学表达

不难发现,y(x)的形似几率取对数的本质其实就是我们的线性回归z,我们实际上是在对线性回归模型的预测结果取对数几率来让其的结果无限逼近0和1。因此,其对应的模型被称为”对数几率回归“(logistic Regression),也就是我们的逻辑回归,这个名为“回归”却是用来做分类工作的分类器。之前我们提到过,线性回归的核心任务是通过求解 构建 这个预测函数,并希望预测函数 能够尽量拟合数据,因此逻辑回归的核心任务也是类似的:求解 来构建一个能够尽量拟合数据的预测函数 ,并通过向预测函数中输入特征矩阵来获取相应的标签值y。


第6章 sigmod函数的本质是概率吗

经过sigmod函数转换后,距离d被转换成了[0,1] 之间的数值,当给定一个样本,算出其到拟合曲线的距离自然就是[0,1]之间,转换后的特性与概率的特性及其相似,这样就可以利用现成的概率相关的函数用来进行数学计算,因此,大多时候,直接借用概率的概率来阐述了。

但本质上,并非是真正意义上的概率!!!!这一点需要清醒的认知。


第7章 为什么需要逻辑回归:逻辑回归的优势

有了用于拟合的回归,有了专门用于分类的模型,为啥还需要逻辑回归这一种模型呢?

它相对于普通的分类(如决策树分类),有什么优势与特点呢?

线性回归:对数据的要求很严格,比如标签必须满足正态分布,特征之间的多重共线性需要消除等等,而现实中很多真实情景的数据无法满足这些要求,因此线性回归在很多现实情境的应用效果有限。逻辑回归是由线性回归变化而来,因此它对数据也有一些要求,而我们之前已经学过了强大的分类模型决策树和随机森林,它们的分类效力很强,并且不需要对数据做任何预处理。
何况,逻辑回归的原理其实并不简单。一个人要理解逻辑回归,必须要有一定的数学基础,必须理解损失函数,正则化,梯度下降,海森矩阵等等这些复杂的概念,才能够对逻辑回归进行调优。其涉及到的数学理念,不比支持向量机少多少。况且,要计算概率,朴素贝叶斯可以计算出真正意义上的概率,要进行分类,机器学习中能够完成二分类功能的模型简直多如牛毛。因此,在数据挖掘,人工智能所涉及到的医疗,教育,人脸识别,语音识别这些领域,逻辑回归没有太多的出场机会。甚至,在我们的各种机器学习经典书目中,周志华的《机器学习》400页仅有一页纸是关于逻辑回归的(还是一页数学公式),《数据挖掘导论》和《Python数据科学手册》中完全没有逻辑回归相关的内容,sklearn中对比各种分类器的效应也不带逻辑回归玩,可见业界地位。

但是,无论机器学习领域如何折腾,逻辑回归依然是一个受工业商业热爱,使用广泛的模型,因为它有着不可替代的优点:

(1)逻辑回归对线性分类关系的拟合效果好到丧心病狂

特征标签之间的线性关系极强的数据,比如金融领域中的信用卡欺诈,评分卡制作,电商中的营销预测等等相关的数据,都是逻辑回归的强项。

虽然现在有了梯度提升树GDBT,比逻辑回归效果更好,也被许多数据咨询公司启用,但逻辑回归在金融领域,尤其是银行业中的统治地位依然不可动摇(相对的,逻辑回归在非线性数据的效果很多时候比瞎猜还不如,所以如果你已经知道数据之间的联系是非线性的,千万不要迷信逻辑回归)

(2)逻辑回归计算快:

对于线性数据,逻辑回归的拟合和计算都非常快,计算效率优于SVM和随机森林,亲测表示在大型数据上尤其能够看得出区别。

(3)逻辑回归返回的分类结果不是固定的0,1,而是以小数形式呈现的类概率数字

在有些分类中,返回的结果是0或1的数值,没有中介结果。而逻辑回归输出的是[0,1]的小数

我们因此可以把逻辑回归返回的结果当成连续型数据来利用。比如在评分卡制作时,我们不仅需要判断客户是否会违约,还需要给出确定的”信用分“,而这个信用分的计算就需要使用类概率计算出的对数几率,而决策树和随机森林这样的分类器,可以产出分类结果,却无法帮助我们计算分数(当然,在sklearn中,决策树也可以产生概率,使用接口predict_proba调用就好,但一般来说,正常的决策树没有这个功能)。

即我们不仅仅需要知道信用的等级或好坏,我们还需要知道好的什么程度,坏到什么程度。如10%, 20%,30%, 40%,50%,60%,70%,80%,90%,100%,如果是而分类,只有0和1,分界点可能是50%。

(4)逻辑回归的灵活性

然而,60%和90%都归为1,但他们程度是不同的。我们还需要对他们进行进一步的划分,如划分为等级A, B, C, D.....等等,这就给逻辑回归的输出 结果的使用带来了极大灵活性,我们可以利用输出,完成二分类,也可以用输出结果大多多分类的效果。


(5)另外,逻辑回归还有抗噪能力强的优点。

福布斯杂志在讨论逻辑回归的优点时,甚至有着“技术上来说,最佳模型的AUC面积低于0.8时,逻辑回归非常明显优于树模型”的说法。并且,逻辑回归在小数据集上表现更好,在大型的数据集上,树模型有着更好的表现。由此,我们已经了解了逻辑回归的本质,它是一个返回对数几率的,在线性数据上表现优异的分类器,它主要被应用在金融领域。其数学目的是求解能够让模型对数据拟合程度最高的参数 的值,以此构建预测函数 ,然后将特征矩阵输入预测函数来计算出逻辑回归的结果y。注意,虽然我们熟悉的逻辑回归通常被用于处理二分类问题,但逻辑回归也可以做多分类。



第8本章 逻辑回归分类

根据拟合函数的类型,分为


8.1 线性回归

线性回归就利用多个线性直线函数叠加作为拟合函数。



8.2 非线性回归

(1)概述

非线性回归就利用多个非线性函数的叠加作为拟合函数:

(2)常见的非线性函数就是多项式函数:

多项式函数,是数学概念。形如f(x)=an·x^n+an-1·x^(n-1)+…+a2·x^2+a1·x+a0的函数,叫做多项式函数,它是由常数与自变量x经过有限次乘法与加法运算得到的。显然,当n=1时,其为一次函数y=kx+b,当n=2时,其为二次函数。


(3)多项式可以处理非常复杂的分类问题:



作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
author-avatar
淡定神仙2502891317
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有